package cn.jingzhuan.fm.utils;

import android.content.Context;
import android.view.WindowManager;

/**
 * 屏幕宽度高度，dp、sp 转换为 px 的工具类.
 * @author LongBin
 */
public class DisplayUtils {

    private static final float ADJUST = 0.5f;

	/**
	 * 将px值转换为dip或dp值，保证尺寸大小不变
	 * @param pxValue
	 *            px值
	 * @param context
	 *            上下文
	 * @return px的dip的值
	 */
	public static int px2dip(final Context context, final float pxValue) {
		// scale（DisplayMetrics类中属性density）
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (pxValue / scale + ADJUST);
	}

	/**
	 * 将dip或dp值转换为px值，保证尺寸大小不变
	 * @param dipValue
	 *            dip的值
	 * @param context
	 *            上下文
	 * @return dip的px值
	 */
	public static int dip2px(final Context context, final float dipValue) {
		// scale（DisplayMetrics类中属性density）
		final float scale = context.getResources().getDisplayMetrics().density;
		return (int) (dipValue * scale + ADJUST);
	}

	/**
	 * 将px值转换为sp值，保证文字大小不变
	 * @param pxValue
	 *            px值
	 * @param context
	 *            上下文
	 * @return px的sp值
	 */
	public static int px2sp(final Context context, final float pxValue) {
		// scale（DisplayMetrics类中属性density）
		final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (pxValue / fontScale + ADJUST);
	}

	/**
	 * 将sp值转换为px值，保证文字大小不变
	 * @param spValue
	 *            sp值
	 * @param context
	 *            上下文
	 * @return sp的pix值
	 */
	public static int sp2px(final Context context, final float spValue) {
		// scale（DisplayMetrics类中属性density）
		final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
		return (int) (spValue * fontScale + ADJUST);
	}

	/**
	 * 获取屏幕宽度
	 * @param context 上下文
	 * @return 屏幕宽度
	 */
	@SuppressWarnings("deprecation")
	public static final int getWidth(Context context) {
		final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		return wm.getDefaultDisplay().getWidth();
	}

    public static final int getWidthInPx(Context context) {
        final int width = context.getResources().getDisplayMetrics().widthPixels;
        return width;
    }

	/**
	 * 获取屏幕高度
	 * @param context 上下文
	 * @return 屏幕高度
	 */
	@SuppressWarnings("deprecation")
	public static final int getHeight(Context context) {
		final WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
		return wm.getDefaultDisplay().getHeight();
	}

	public static final float getHeightInPx(Context context) {
		final float height = context.getResources().getDisplayMetrics().heightPixels;
		return height;
	}
}

